# 配置文件
import uuid
import random
import string
import os
import json

class Config:
    # 注册URL
    REGISTER_URL = "https://ptlogin.4399.com/ptlogin/regFrame.do?regMode=reg_normal&postLoginHandler=default&bizId=&redirectUrl=&displayMode=popup&css=&appId=www_home&gameId=&noEmail=false&regIdcard=false&autoLogin=true&cid=&aid=&ref=&level=4&mainDivId=popup_reg_div&includeFcmInfo=false&externalLogin=qq&fcmFakeValidate=true&expandFcmInput=true&userNameLabel=4399%E7%94%A8%E6%88%B7%E5%90%8D&userNameTip=%E8%AF%B7%E8%BE%93%E5%85%A54399%E7%94%A8%E6%88%B7%E5%90%8D&welcomeTip=%E6%AC%A2%E8%BF%8E%E5%9B%9E%E5%88%B04399&v=1752541354469&iframeId=popup_reg_frame"

    # 验证码图片URL
    CAPTCHA_URL = "https://ptlogin.4399.com/ptlogin/captcha.do"

    # 默认密码
    DEFAULT_PASSWORD = "123456"

    # 注意：为保护用户隐私，身份证和姓名信息不再存储，每次使用时需要用户输入

    # 浏览器配置
    BROWSER_CONFIG = {
        'headless': False,  # 是否无头模式
        'window_size': (1200, 800),
        'timeout': 30,
        'use_proxy': False,  # 是否使用代理
        'proxy_list': [
            # Clash for Windows 本地代理
            #"http://127.0.0.1:7890",  # HTTP 代理
          #  "socks5://127.0.0.1:7891",  # SOCKS5 代理（备用）
        ]
    }

    # 注册间隔时间（秒）
    REGISTER_INTERVAL = 1

    # 最大重试次数
    MAX_RETRY = 3

    # 配置文件路径
    CONFIG_FILE = "user_config.json"

    def __init__(self):
        """初始化配置，加载用户自定义设置"""
        self.load_user_config()

    def load_user_config(self):
        """加载用户配置"""
        if os.path.exists(self.CONFIG_FILE):
            try:
                with open(self.CONFIG_FILE, 'r', encoding='utf-8') as f:
                    user_config = json.load(f)

                # 更新配置（不再加载身份证和姓名信息）
                if 'password' in user_config:
                    self.DEFAULT_PASSWORD = user_config['password']
                if 'browser_config' in user_config:
                    self.BROWSER_CONFIG.update(user_config['browser_config'])

                print(f"✅ 已加载用户配置")
            except Exception as e:
                print(f"⚠️ 加载用户配置失败: {e}")

    def save_user_config(self, password=None, browser_config=None):
        """保存用户配置（不保存身份证和姓名等敏感信息）"""
        try:
            # 读取现有配置
            user_config = {}
            if os.path.exists(self.CONFIG_FILE):
                try:
                    with open(self.CONFIG_FILE, 'r', encoding='utf-8') as f:
                        user_config = json.load(f)
                except:
                    pass

            # 更新配置（仅保存密码和浏览器配置）
            if password:
                user_config['password'] = password
                self.DEFAULT_PASSWORD = password
            if browser_config:
                user_config['browser_config'] = browser_config
                self.BROWSER_CONFIG.update(browser_config)

            # 保存配置
            with open(self.CONFIG_FILE, 'w', encoding='utf-8') as f:
                json.dump(user_config, f, ensure_ascii=False, indent=2)

            print(f"✅ 已保存用户配置")
            return True
        except Exception as e:
            print(f"⚠️ 保存用户配置失败: {e}")
            return False

    @staticmethod
    def generate_username(prefix="dai", uuid_length=10):
        """生成随机用户名

        Args:
            prefix: 账号名前缀，默认"dai"
            uuid_length: UUID随机数位数，默认10位

        Returns:
            str: 生成的用户名，格式为：前缀+随机数
        """
        # 使用UUID生成唯一用户名，取指定位数
        unique_id = str(uuid.uuid4()).replace('-', '')[:uuid_length]
        return f"{prefix}{unique_id}"

    @staticmethod
    def generate_qq():
        """生成随机QQ号（可选）"""
        return str(random.randint(100000000, 999999999))
